package flare.animate
{
  /**
   * Interface for "schedulable" objects that can be run by
   * the Scheduler class.
   */
  public interface ISchedulable
  {
    /**
     * Evaluate a scheduled call.
     * @param time the current time in milliseconds
     * @return true if this item should be removed from the scheduler,
     * false if it should continue to be run.
     */
    function evaluate(time:Number):Boolean;

    /** A unique name identifying this schedulable object. The default
     *  is <code>null</code>. If non-null, any other scheduled items with
     *  the same id will be canceled upon scheduling.
     *  
     *  <p>Once an item has been scheduled, it's id should not be changed.
     *  However, it is left to subclasses to respect this convention.
     *  If it is not followed, erratic cancels may occur.</p> */
    function get id():String;

    function set id(n:String):void;

    /** Invoked if a scheduled item is cancelled by the scheduler. */
    function cancelled():void;
  } // end of interface ISchedulable
}